<template>
  <transition name="slide-up">
    <div class="setting-wrapper" v-show="menuVisible && settingVisible === 2">
      <div v-show="menuVisible && settingVisible === 2" class="setting-progress">
        <div class="read-time-wrapper">
          <span class="read-time-text">{{ getReadTimeText() }}</span>
          <span class="icon-forward"></span>

        </div>
        <div class="progress-wrapper">
          <div class="progress-icon-wrapper">
            <span class="icon-back" @click="prevSection()"></span>
          </div>
          <input type="range"
                 class="progress"
                 max="100"
                 min="0"
                 step="1"
                 @change="onProgressChange($event.target.value)"
                 @input="onProgressInput($event.target.value)"
                 :value="progress"
                 :disabled="!bookAvailable"
                 ref="progress"
          >
          <div class="progress-icon-wrapper">
            <span class="icon-forward" @click="nextSection()"></span>
          </div>
        </div>
        <div class="text-wrapper">
          <span class="progress-section-text">{{getSectionName}}</span>
          <span>{{bookAvailable ? progress + '%': '加载中...'}}</span>
        </div>
      </div>
    </div>
  </transition>
</template>

<script type="text/ecmascript-6">
import {ebookMixin} from '@/utils/mixin'

export default {
  mixins: [ebookMixin],
  name: "EbookSettingProgress",
  methods: {
    prevSection(){
      if (this.section > 0 && this.bookAvailable){
        this.setSection(this.section -1).then(() => {
          this.displaySection()
        })
      }
    },
    nextSection(){
      if (this.section < this.currentBook.spine.length -1 && this.bookAvailable){
        this.setSection(this.section + 1).then(() => {
          this.displaySection()
        })
      }
    },
    displaySection(){
      const sectionInfo = this.currentBook.section(this.section)
      if (sectionInfo && sectionInfo.href){
        this.display(sectionInfo.href)
      }
    },

    onProgressChange(progress){
      this.setProgress(progress).then(() => {
        this.displayProgress()
        this.updateProgressBg()
      })
    },
    onProgressInput(progress){
      this.setProgress(progress).then(() => {
        this.updateProgressBg()
      })
    },
    displayProgress(){
      const cfi = this.currentBook.locations.cfiFromPercentage(this.progress / 100)
      this.display(cfi)
    },
    updateProgressBg(){
      this.$refs.progress.style.backgroundSize = `${this.progress}% 100%`
    }
  },
  updated() {
    this.updateProgressBg()
  }
}
</script>

<style scoped lang="scss">
@import '~@/assets/styles/global';
.setting-wrapper {
  z-index: 101;
  position: absolute;
  bottom: px2rem(48);
  left: 0;
  width: 100%;
  height: px2rem(90);
  background-color: #ffffff;
  box-shadow: 0 px2rem(-8) px2rem(8) rgba(0, 0, 0, .15);

  .setting-theme{
    height: 100%;
    display: flex;
    .setting-theme-item{
      flex: 1;
      display: flex;
      flex-direction: column;
      padding: px2rem(5);
      box-sizing: border-box;
      .preview{
        width: 100%;
        flex: 1;
        border: px2rem(1) solid #cccccc;
        box-sizing: border-box;
        &.no-border{
          border: none;
        }
      }
      .text{
        flex: 0 0 px2rem(20);
        font-size: px2rem(14);
        color: #ccc;
        @include center;
        &.selected{
          color: #333333;
        }
      }
    }
  }
  .setting-progress{
    position: relative;
    width: 100%;
    height: 100%;
    .read-time-wrapper{
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      @include center;
      height: px2rem(40);
      font-size: px2rem(12);
    }
    .progress-wrapper{
      @include center;
      padding: 0 px2rem(15);
      box-sizing: border-box;
      width: 100%;
      height: 100%;
      .progress-icon-wrapper{
        font-size: px2rem(20);
      }
      .progress{
        width: 100%;
        -webkit-appearance: none;
        height: px2rem(2);
        margin: 0 px2rem(10);
        &:focus{
          outline: none;
        }
        &::-webkit-slider-thumb{
          -webkit-appearance: none;
          height: px2rem(20);
          width: px2rem(20);
          border-radius: 50%;
          background: #ffffff;
          box-shadow: 0 4px 4px rgba(0,0,0,.15);
          border: px2rem(1) solid #ddd;
        }
      }
    }
    .text-wrapper{
      position: absolute;
      left: 0;
      bottom: px2rem(10);
      width: 100%;
      color: #333;
      font-size: px2rem(12);
      box-sizing: border-box;
      @include center;
      .progress-section-text{
        @include ellipsis;
      }
    }

  }
}
</style>
